package com.xnyzc.lhy.resource.util.oss;

import com.xnyzc.lhy.common.exception.PangException;
import com.xnyzc.lhy.common.penum.EErrorCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  oss对象存储服务工厂类
 *  支持对象存储服务：
 *  aliyun=阿里云；
 *  qcloud=腾讯云；
 *
 * </p>
 *
 * @author haoyfa
 * @since 2019-10-19
 **/
@Service
@Slf4j
public class OSSFactory {
    /**
     * 对象存储服务类型
     */
    @Value("${global.oss.ossType}")
    private String ossType;

    /**
     * 阿里云实例
     */
    @Autowired
    private AliyunOSS aliyunOSS;

    /**
     * 腾讯云实例
     */
    @Autowired
    private QCloudCOS qCloudCOS;

    /**
     * 创建oss对象实例，根据global.oss变量判断系统使用的oss服务
     * @return oss对象实例
     */
    public IOSS initializtionOSS() {
        switch (ossType) {
            case "aliyun":
                aliyunOSS.Initializtion();
                return aliyunOSS;
            case "qcloud":
                qCloudCOS.Initializtion();
                return qCloudCOS;
            default:
                throw new PangException(EErrorCode.oaSysGlobalConfigIsNull);
        }
    }
}
